// pages/goods_detail/index.js
import {
  request
} from '../../request/index'
import {
  showToast
} from '../../utils/asyncWx'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsObj: {},
    // 商品收藏
    isCollect: false
  },

  //商品对象
  GoodsInfo: {},

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let {goods_id } = options
    this.getGoodsDetail(goods_id)
  },

  getGoodsDetail(goods_id) {
    request({
        url: '/goods/detail',
        data: {
          goods_id
        }
      })
      .then(res => {
        let goodsObj = res.data.message
        this.GoodsInfo = goodsObj

        // 获取缓存中的收藏数据
        let collect = wx.getStorageSync('collect') || []
        // 遍历查询是否被收藏
        let isCollect = collect.some(item => item.goods_id === this.GoodsInfo.goods_id)

        this.setData({
          goodsObj: {
            // 优化性能
            goods_name: goodsObj.goods_name,
            goods_price: goodsObj.goods_price,
            goods_introduce: goodsObj.goods_introduce,
            pics: goodsObj.pics,
          },
          isCollect
        })
      })
  },

  //轮播图放大
  handlePrevewImage(e) {
    //构造要预览的图片数组
    const urls = this.GoodsInfo.pics.map(item => item.pics_mid)
    const current = e.currentTarget.dataset.url
    wx.previewImage({
      urls,
      current
    })
  },


  //加入购物车
  handleCartAdd(e) {
    //获取缓存中的购物车数据
    const cart = wx.getStorageSync('cart') || []
    //判断 当前商品是否已经存在于购物车
    let index = cart.findIndex(item => item.goods_id === this.GoodsInfo.goods_id)
    if (index == -1) {
      //商品不存在 第一次添加
      this.GoodsInfo.num = 1
      this.GoodsInfo.checked = true
      cart.push(this.GoodsInfo)
    } else {
      //已经存在购物车 则需要 num++
      cart[index].num++
    }

    //把购物车的数据重新放回缓存
    wx.setStorageSync('cart', cart)
    //弹窗提示用户
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      mask: true
    })

  },

  // 收藏
  handleCollect() {
    let isCollect = false
    // 获取缓存中被收藏的商品
    let collect = wx.getStorageSync('collect') || []
    // 遍历数组 查找商品是否被收藏了
    let index = collect.findIndex(item => item.goods_id === this.GoodsInfo.goods_id)
    // 判断 index 是否为 !-1 如果是证明商品已被收藏
    if (index !== -1) {
      // 被收藏后需要删除该商品
      collect.splice(index, 1)
      isCollect = false
      // 提示用户已取消收藏
      showToast({
        title: '取消成功'
      })
    } else {
      // 没有收藏则需要添加进这个数组中
      collect.push(this.GoodsInfo)
      isCollect = true
      showToast({
        title: '收藏成功'
      })
    }

    //最后把数据放回缓存中
    wx.setStorageSync('collect', collect)

    this.setData({
      isCollect
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})